import axios from 'axios';
const color = 'color:rgb(66, 185, 131)';
const app = {
  /**
   *  封装axios，参数基本跟jQuery的ajax一致
   *  @param {String} type            请求的类型，默认post
   *  @param {String} url             请求地址
   *  @param {String} time            超时时间
   *  @param {Object} data            请求参数
   *  @param {String} dataType        预期服务器返回的数据类型，xml html json ...
   *  @param {Object} headers         自定义请求headers
   *  @param {Function} success       请求成功后，这里会有两个参数,服务器返回数据，返回状态，[data, res]
   *  @param return
   */
  ajax: function (opt) {
    opt = opt || {};
    axios({
      url: opt.url,
      method: opt.type || 'post',
      params: opt.data || {},
      headers: opt.headers || {
        'Content-Type': 'application/x-www-form-urlencoded'
      },
      timeout: opt.time || 10 * 1000,
      responseType: opt.dataType || 'json'
    }).then(function (res) {
      if (res.status === 200) {
        if (opt.success) {
          opt.success(res.data, res);
        }
      }
    }).catch(function (error) {
      if (opt.error) {
        opt.error(error);
      }
    });
  },
  http: function (url, type, param, callback) {
    console.log('%c接口: ' + url, color);
    console.log('%c类型: ' + type, color);
    console.log('%c参数: ' + JSON.stringify(param), color);
    app.ajax({
      url: url,
      type: type,
      data: param,
      dataType: 'json',
      success: function (data, res) {
        console.log('成功返回 =>', {
          param: res.config,
          callback: res.data
        });
        callback(data);
      },
      error: function (error) {
        console.log('失败返回 =>', [{
          error: error
        }]);
        callback(error);
      }
    })
  },
  https: function (url, type, param, callback) {
    var opstions = {
      url: url,
      method: type,
      params: param,
      headers: {
        'Content-Type': 'application/x-www-form-urlencoded'
      },
      time: 10 * 1000,
      responseType: 'json'
    }
    axios(opstions).then((res) => {
      callback(res.data)
    }).catch((error) => {
      callback(error)
    });
  }
};
export default app
